package com.marvels.financial.loan.service;

import com.github.pagehelper.Page;
import com.marvels.common.dto.MarvelsResultDTO;
import com.marvels.common.exception.MarvelsBusinessException;
import com.marvels.financial.loan.dto.EarlyPaymentCalculatDto;
import com.marvels.financial.loan.dto.ReplacePaymentApplyInfo;
import com.marvels.financial.loan.dto.ReplacePaymentConditionDto;
import com.marvels.financial.loan.dto.SellBackCondition;

import java.util.Map;

/**
 * 代还款
 * @author tangpw
 *
 */
public interface ReplacePaymentApi {


	/**
	 * 查询代还款信息
	 * @param replacePaymentConditionDto
	 * @return
	 */
	public MarvelsResultDTO replacePaymentApplyInfo(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;



	/**
	 * 查代还款申请通过列表
	 * @param replacePaymentConditionDto
	 * @return
	 */
	public Page<ReplacePaymentApplyInfo> replacePaymentAdoptList(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;



	/**
	 * 代还款申请拒绝列表
	 * @param replacePaymentConditionDto
	 * @return
	 */
	public Page<ReplacePaymentApplyInfo> replacePaymentRefuseList(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;


	/**
	 * 代还款申请
	 * @param replacePaymentConditionDto
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public void replacePaymentApply(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;

	/**
	 * 展期申请
	 * @param replacePaymentConditionDto
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public void extensionApply(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;



	/**
	 * 查询代还款审核中的信息列表
	 * @param replacePaymentConditionDto
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Page<ReplacePaymentApplyInfo> replacePaymentAuditList(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;




	/**
	 * 代还款审核通过
	 * @param replacePaymentConditionDto
	 * @throws MarvelsBusinessException
	 */
	public void replacePaymentAuditAdopt(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;




	/**
	 * 代还款审核拒绝
	 * @param replacePaymentConditionDto
	 * @throws MarvelsBusinessException
	 */
	public void replacePaymentAuditRefuse(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;





	/**
	 * 代还款  代展期 回销处理
	 * @param sellBackCondition
	 * @throws MarvelsBusinessException
	 */
	public void  sellBackDeal(SellBackCondition sellBackCondition) throws MarvelsBusinessException;



	/**
	 * 查询代还款信息
	 * @param replacePaymentConditionDto
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map<String, Object> queryPayment(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;



	/**
	 * 查询提前结清信息
	 * @param replacePaymentConditionDto
	 * @return
	 */
	public MarvelsResultDTO earlyPaymentApplyInfo(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;



	/**
	 * 查提前结清申请通过列表
	 * @param replacePaymentConditionDto
	 * @return
	 */
	public Page<ReplacePaymentApplyInfo> earlyPaymentAdoptList(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;



	/**
	 * 提前结清申请拒绝列表
	 * @param replacePaymentConditionDto
	 * @return
	 */
	public Page<ReplacePaymentApplyInfo> earlyPaymentRefuseList(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;


	/**
	 * 提前结清申请
	 * @param replacePaymentConditionDto
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public void earlyPaymentApply(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;





	/**
	 * 查询提前结清审核中的信息列表
	 * @param replacePaymentConditionDto
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Page<ReplacePaymentApplyInfo> earlyPaymentAuditList(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;




	/**
	 * 提前结清审核通过
	 * @param replacePaymentConditionDto
	 * @throws MarvelsBusinessException
	 */
	public void earlyPaymentAuditAdopt(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;




	/**
	 * 提前结清审核拒绝
	 * @param replacePaymentConditionDto
	 * @throws MarvelsBusinessException
	 */
	public void earlyPaymentAuditRefuse(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;



	/**
	 * 提前结清试算
	 * @param replacePaymentConditionDto
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public EarlyPaymentCalculatDto calculatEarlypayment(ReplacePaymentConditionDto replacePaymentConditionDto) throws MarvelsBusinessException;


}
